import axios from 'axios'
import router from '@/router'
import Cookies from 'js-cookie';

// 创建 axios 实例，使用代理配置
const service = axios.create({
  timeout: 50000,
  baseURL: process.env.VUE_APP_BASE_API,
  headers: {
    'Content-Type': 'application/json'
  }
})

//请求拦截器
service.interceptors.request.use(
  config => {
    // 优先从 Cookie 获取 token，兜底从 localStorage/sessionStorage 获取
    const token = Cookies.get('token') || localStorage.getItem('token') || sessionStorage.getItem('token')
    //alert("请求拦截器",token)
    // 每次请求带上token
    if (token) {
      config.headers['Authorization'] = `Bearer ${token}`
    }
    
    return config
  },
  error => {
    console.error('请求拦截器错误:', error)
    return Promise.reject(error)
  }
)

// 简化的响应拦截器
service.interceptors.response.use(
  response => {
    console.log('响应数据:', response); // 打印完整响应，便于调试
    // 处理二进制文件下载（Blob 类型）
    if (response.config.responseType === 'blob') {
      return response.data;
    }
    return response.data;
  },
  error => {
    console.error('请求失败:', error);
    // 处理 HTTP 状态码错误
    if (error.response) {
      const status = error.response.status;
      const message = error.response.data?.Msg || `HTTP错误 ${status}`;
      
      switch (status) {
        case 401:
          router.push('/login');
          break;
        case 403:
          console.error('权限不足:', message);
          break;
        case 500:
          console.error('服务器错误:', message);
          break;
        default:
          console.error(`HTTP错误 ${status}:`, message);
      }
    }
    
    return Promise.reject(error);
  }
);

export default service